﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using SisEagle.IView.Controle;
using System.Data;

namespace SisEagle.View.Web.Controle
{
    public partial class ControlesEstoques : WebPageBase, IControlesEstoqueView
    {
        #region Singleton
        private SisEagleBO.ControleEstoqueBO _ControleEstoqueBusiness;
        private SisEagleBO.ControleEstoqueBO ControleEstoqueBusiness
        {
            get
            {
                if (_ControleEstoqueBusiness == null)
                    _ControleEstoqueBusiness = new SisEagleBO.ControleEstoqueBO();

                return _ControleEstoqueBusiness;
            }
        }

        #endregion

        #region Page-Load
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            if (!DesignMode)
            {
                inicialize();
            }
            
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

            }
        }
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            gridEstoques.RowDataBound += gridEstoques_RowDataBound;
            gridEstoques.PageIndexChanging += (gridEstoques_PageIndexChanging);
        }

        void gridEstoques_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int TotalRow = ListaResultado.Tables["ControleEstoque"].Rows.Count;
            AjustaTotalizador(TotalRow,1, "Quantidade", 2,"QuantidadeMinima", e);
        }

        void gridEstoques_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridEstoques.PageIndex = e.NewPageIndex;
            gridEstoques.DataSource = BuscarEstoques();
            gridEstoques.DataBind();
        }

        private DataView BuscarEstoques()
        {
            DataView dv = new DataView();

            dv = ControleEstoqueBusiness.FindAll().Tables[0].DefaultView;

            return dv;
        }


        #endregion

        #region Internal
        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {
            CarregaGrid();
        }

        private void CarregaGrid()
        {
            gridEstoques.DataSource = ListaResultado;
            gridEstoques.DataBind();
        }


        #endregion

        #region Binding

        public int CodProduto
        {

            get
            {
                if (string.IsNullOrEmpty(UcCmbProdutos.ComboProdutos.SelectedValue) || !(UtilsNumber.IsNumber(UcCmbProdutos.ComboProdutos.SelectedValue)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(UcCmbProdutos.ComboProdutos.SelectedValue);

            }
            set
            {

                UcCmbProdutos.ComboProdutos.SelectedValue = value.ToString();
            }
        }

        public int Quantidade
        {

            get
            {
                if (string.IsNullOrEmpty(txtQuantidade.Text) || !(UtilsNumber.IsNumber(txtQuantidade.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtQuantidade.Text);

            }
            set
            {
                txtQuantidade.Text = value.ToString();
            }
        }

        public int QuantidadeMinima
        {

            get
            {
                if (string.IsNullOrEmpty(txtQuantidadeMinima.Text) || !(UtilsNumber.IsNumber(txtQuantidadeMinima.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtQuantidadeMinima.Text);

            }
            set
            {
                txtQuantidadeMinima.Text = value.ToString();
            }
        }


        public DataSet ListaResultado
        {
            get
            {
                if (CodProduto != 0)
                    return ControleEstoqueBusiness.FindBy_CodProduto(CodProduto);

                if (Quantidade != 0)
                    return ControleEstoqueBusiness.FindBy_Quantidade(Quantidade);

                if (QuantidadeMinima != 0)
                    return ControleEstoqueBusiness.FindBy_QuantidadeMinima(QuantidadeMinima);

                else
                    return ControleEstoqueBusiness.FindAll();

            }
            set
            {
                ListaResultado = value;
                CarregaGrid();
            }
        }





        #endregion

    }
}